Interoperable ORBs -- Providing a Communication Framework for Internet Applications

by Peggy King

It is a truth universally acknowledged that a software project will take at least twice as long to complete as anyone expected. In an attempt to prove this corollary to Murphyφs law, the Standish Group, a computer industry market research firm in Cape Cod, Mass., conducted the Chaos research project. As part of the project, researchers surveyed over IT executive managers in 1994 and again last year. The updated (November 1996) results from a survey of 360 IT executive managers in charge of over 6500 applications suggest that the average time overrun for a software project is about 222* percent. If your company runs on Internet time, such delays can be costly. If you canφt get your companyφs programmers to work any faster, another approach to the problem is to give them less to do.

Interoperable ORBs - Handling the Infrastructure

The information that Standish Group research analyst Karen Boucher compiled for the Chaos project led her to conclude that about 70 percent of the time spent on developing new applications is for creating infrastructure and only 30 percent of the work relates directly to application-specific requirements. Object request broker (ORB) middleware significantly reduces the time and effort of writing distributed object applications because it relieves developers of the chore of creating the framework that allows objects to communicate. In an Internet or intranet application, creating a communications infrastructure is an even larger task because objects behind the firewall may need to communicate with objects outside of it, or vice versa. The industry-recognized standard specification for ORBs, first developed in the early 1990s, is the Common Object Request Broker Architecture, or CORBA, from the Object Management Group (OMG) of Framingham, Mass. CORBA 2.0,the latest version of the specification, includes the Internet Inter-ORB Protocol (IIOP) which was written to assure that CORBA-compliant ORBs can communicate with one another across the Internet.

Organizations that buy a CORBA-compliant ORB rather than build their own distributed object framework benefit in three ways ---time savings, investment protection via standards, and potential for reuse. They save the time it takes to build an application infrastructure and can concentrate instead on creating business logic. If the organization uses a CORBA-compliant ORB such as VisiBroker for C++ (formerly ORBeline) or VIsiBroker for Java (formerly BlackWidow) from Visigenic Software Inc. of San Mateo, Calif., its business objects can communicate via any other CORBA 2.0-compliant ORB. With interoperable ORBs, these business objects can be reused even if the communication infrastructure is changed, for example, when one company acquires another.

The Work That is Left For Applications Developers

Building Internet applications on top of CORBA 2.0-compliant ORBs can significantly reduce the workload of an organizationφs IT department. The CORBA specification includes an interface definition language (IDL) that defines the external interfaces to business objects. The IDL defines the 'plumbing' (object types, attributes, methods, and method parameters) and generates stubs (in C++) or skeletons (in Java). To build an application from objects, the developers need only to know the interface definition for the client on the front end and the objects on the back end. VisiBroker for C++ and VisiBroker for Java both include an IDL compiler that reads IDL source code and generates the communications code that is needed to check network and/or open a network connection.

When applications are built on top of a standards-based ORB, the developers are free to concentrate on the business-specific aspects of implementation instead of focusing on what parts of an application can communicate with other parts and how to accomplish the messaging. The only 'glue' code that developers need to be concerned with is defining and writing the interface for the business objects that they create. CORBA-compliant ORBs use IDL language mapping specifications to create the code needed to perform data conversions. These data conversions make objects created with one CORBA- compliant ORB interoperate with other CORBA-compliant objects.

Demo a Distributed Application At www.visigenic.com

Visigenic recently posted a demo of a portfolio manager application it on its Web site at www.visigenic.com along with instructions on how to download its client applet from a Java-enabled browser or with Castanet Tuner and Transmitter from Marimba software of Palo Alto, Calif. Although it's possible to use this site to track ones portfolio because it contains real-time stock quotes from Yahoo and the Security APL QuoteServer, Visigenic intended the portfolio manager as a demonstration of how its ORB products work rather than for trading purposes.

The Portfolio Manager is a CORBA 2.0-compliant Web-based application. The client applet tracks financial information by making calls to remote servers that manage the accounts, portfolios, cash balances, and financial quotes for all users. The applet was implemented using Java user interface code and VisiBroker for Java. It is deployed using objects running on servers at Visigenic headquarters.

Multiple clients can simultaneously access the Portfolio Manager servers to modify thousands of individual portfolios. Multiple users can also access the same portfolio account simultaneously. The data for the stock traded by users and for each portfolio account is maintained only on the servers, making the Portfolio Manager a distributed application because the financial data and the business logic are completely separate from the client interface.

The Portfolio Manager is comprised of three tiers -- the client interface, the servers and a communication layer. On the client side, there is interface code written entirely in Java using the Java Applied Window Toolkit (AWT). The graphics including the buttons, colors selections and dialog boxes were all written using standard Java code so that interface will look and feel nearly the same on any Web-enabled platform.


Click Here for Larger View

While the interface code on the client side is concerned only with the display, the application logic is concerned with executing the commands made by the user. Application logic code executes when a user with funds in his or her account types in a stock symbol and a quantity of shares and clicks on the Buy radio button. The application logic dictates which servers to contact, what information is provided to the servers, and what information comes back.

The business logic is on the server side where objects implemented in both C++ and Java can reside on multiple servers. The Portfolio Manager has its two business objects, one called Portfolio object and the other called Quote object, which run on two separate servers. The client applet has a client interface to tie the business objects together with the application logic in order to make use of them, but the client computer does not store the data. The Portfolio Manager uses the client interface to create an account, add stocks to a portfolio and update them. Changes to an account take place on a remote server rather than on the investorφs computer.

Distributed Object Communication With a Broker in the Middle

VisiBroker for Java resides in the middle tier of a distributed application and provides the communication logic between the applet running on the client and the objects running on the servers. The Portfolio Manager's Portfolio and Quote objects have interfaces on which the client applet makes calls, or requests. For example, the Quote object has a reference called getQuote that instructs the object to retrieve the current price for a stock specified by the user. In order to find and track object references, the applet makes use of the object request broker to execute the applet's calls, get responses, and send them back to the client.

Putting Smart Agents to Work

When an applet is brought up, it starts by performing a 'bind.' A bind establishes the communication link with all the components required to run the application. The Portfolio Manager applet binds to the Portfolio and Quote objects. To do this, the applet contacts the Portfolio Manager's Smart Agent, which is the part of VisiBroker for Java that locates the business objects and routes messages from the applet. In the Portfolio Manager applet, the Smart Agent knows the server on which the Portfolio and the Quote objects are running. The applet lets the Smart Agent know that it requires an object reference for the Portfolio object. The Smart Agent responds with the requested object reference, enabling the applet to bind to that object. From then on, whenever the applet makes a call on the Portfolio object, it automatically communicates directly with the Portfolio object. The only time the applet goes back to the Smart Agent is if an object reference is no longer valid, as would be the case if the server went down or if the object was moved to another server.

GateKeeper and Wrappers --- Getting Beyond Java Security Restrictions

Because of the security features built into Java, an applet can only communicate with the actual host machine from which it was downloaded. For example, if the server at Visigenic headquarters that hosts www. visigenic.com contains the code for the Portfolio Manager, security restrictions would prevent the application from communicating with any other server. For a stock trading application, this restriction is unworkable because it would mean that all the business logic for the application must be stored a single server. To get around this restriction, Visigenic developed a Gatekeeper that runs on the server from which the applet is downloaded. Gatekeeper is written entirely in Java and can be run on any machine running Java. The Gatekeeper provides the applet with all the necessary codes, or classes. When an applet needs to bind to an object, as the Portfolio Manager applet must bind to the Portfolio object, the bind request goes first to the Gatekeeper. The Gatekeeper knows where to find the Smart Agent, which it contacts to find the desired object. The Smart Agent gives an object reference back to the Gatekeeper, which then communicates with the applet to establish a bind between the applet and the object. From then on, whenever the applet makes a call on that object, the Gatekeeper serves as its police escort to allow it to move beyond the security barricade.

Another obstacle faced by applets is communicating through firewalls. For example, there is a firewall between the server at Visigenic where the GateKeeper application resides and the server that hosts the company's enterprise intranet. Applet communications are Internet Inter-ORP Protocol (IIOP) messages, which are not usually permitted through firewalls. Working with GateKeeper, VisiBroker for Java software handles this restriction using a method the company calls HTTP tunneling. If a client attempts to contact a server that is behind a firewall, it will try to make a connection to the Gatekeeper. However, the connection will probably be refused by the firewall because it's an IIOP message. If the connection is denied, VisiBroker for Java writes HTTP code around the IIOP packet, in effect wrapping HTTP around it and thereby masking the message as a standard HTTP communication.


Click Here for Larger View

The Gatekeeper receives the HTTP packet and tries to parse the message as an IIOP packet. When it fails at this, it tries to parse the message as an HTTP packet. The Gatekeeper can pull off the HTTP wrapper, see the IIOP packet and then parse that message. It then knows to return messages to that client in an HTTP wrapper.

ORBs As Building Blocks for Mission-Critical Applications

ORBs are not merely enabling technology for individual applications such as the Portfolio Manager. A growing number of enterprises are basing their entire information architecture on distributed object technology. A large early adopters, mostly in the financial services and telecommunications industries, have spent years tracking emerging standards and developing their object infrastructures. These efforts are beginning to pay off as the enterprises reap the benefits of rapid application development. ORB vendors have also begin to work with other software providers as implementation partners for large, mission-critical applications. For example, Bank of America subsidiary Concorde Solutions of Concord, Calif. is using Visigenic ORBs along with TPBroker transaction processing monitor technology from Hitachi America of San Jose, Calif. for the Credit Card Online (CCOL), an on-line credit card system that currently includes about twenty business objects. Banking customers who access their account information via Web browser can now perform transactions such as checking their balances and will eventually be able to transfer funds between accounts when the appropriate objects are up and running. The Visigenic ORB functions as it did in the Portfolio Manager demo -- it is the underlying technology that provides a communications framework.

Back to Front Page